/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.reportes.nuevos;

import com.camachosanchez.reportes.bean.EgresosResumido;
import com.camachosanchez.util.Constantes;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.Desktop;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Rolando
 */
public class NuevoReporteResumidoEgresos {

    public void generarReporte(EgresosResumido egresosReporte) {
        try {
            Document document = new Document(PageSize.A4, 10, 10, 10, 10);
            SimpleDateFormat formatterName = new SimpleDateFormat("ddMMyyyy");
            String nombrePdf = "reportes/egresos_resumido" + formatterName.format(new Date()) + ".pdf";
            PdfWriter.getInstance(document, new FileOutputStream(nombrePdf));
            document.open();
            document.add(ReporteUtil.getCabeceraReporte("Egresos", "Reporte resumido de egresos", "Periodo: " + egresosReporte.getFechaDesde() + " - " + egresosReporte.getFechaHasta()));
            document.add(new Paragraph("\n"));
            //--------------------------
            PdfPTable tablaDetalles = new PdfPTable(4);
            tablaDetalles.setWidthPercentage(100f);
            tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla("PILOTO", 1, Constantes.COLOR_CABECERA_TABLA));
            tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla("LLANTA", 1, Constantes.COLOR_CABECERA_TABLA, Element.ALIGN_RIGHT));
            tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla("VIGILANTE", 1, Constantes.COLOR_CABECERA_TABLA, Element.ALIGN_RIGHT));
            tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla("IMPORTE", 1, Constantes.COLOR_CABECERA_TABLA, Element.ALIGN_RIGHT));
            List<String[]> listaEgresos = egresosReporte.getListaEgresos();
            if (listaEgresos != null) {
                for (String[] strings : listaEgresos) {
                    if (strings.length == 4) {
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[0], 1, null, Element.ALIGN_LEFT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[1], 1, null, Element.ALIGN_RIGHT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[2], 1, null, Element.ALIGN_RIGHT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[3], 1, null, Element.ALIGN_RIGHT));
                    } else {
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla("TOTAL", 1, Constantes.COLOR_CABECERA_TABLA, Element.ALIGN_RIGHT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[0], 1, null, Element.ALIGN_RIGHT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[1], 1, null, Element.ALIGN_RIGHT));
                        tablaDetalles.addCell(ReporteUtil.getCeldaCabeceraTabla(strings[2], 1, null, Element.ALIGN_RIGHT));
                    }
                }
            }
            document.add(tablaDetalles);
            document.close();
            File pdfFile = new File(nombrePdf);
            if (Desktop.isDesktopSupported()) {
                Desktop.getDesktop().open(pdfFile);
            } else {
                JOptionPane.showMessageDialog(null, "No se puede abrir el reporte.", "Error al abrir el archivo", JOptionPane.ERROR_MESSAGE);
            }
        } catch (DocumentException ex) {
            ex.printStackTrace();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
